/**
 *
 * @description: 查询商品列表数据
 * @author: junyong.hong
 * @createTime: 2018/3/10
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Goods = require('../models/Goods');

mongoose.connect('mongodb://127.0.0.1:27017/db_demo');

// 连接成功
mongoose.connection.on('connected', function () {
  console.log('MongoDB connected success.');
});

// 连接失败
mongoose.connection.on('error', function () {
  console.log('MongoDB connected fail.');
});

// 断开连接
mongoose.connection.on('disconnected', function () {
  console.log('MongoDB connected disconnected.');
});

/**
 * 获取商品列表的数据
 *  1、分页
 *  2、排序
 * http://localhost:3000/goods?page=1&pageSize=8&sort=1
 *
 */
router.get('/list', function (req, res, next) {
  // 当前页数
  var page = parseInt(req.param('page'));
  // 每页显示条数
  var pageSize = parseInt(req.param('pageSize'));
  // 赛选价格区间
  var priceLevel = req.param('priceLevel');
  // 排序
  var sort = req.param('sort');
  // 跳过几条数据
  var skip = (page - 1) * pageSize;
  // 条件
  var params = {};

  // 价格过滤：priceGt大于最小区间  priceLte小于等于区间
  var priceGt = '', priceLte = '';
  if (priceLevel != 'all'){
    switch (priceLevel) {
      case '0':priceGt = 0;priceLte = 100;break;
      case '1':priceGt = 100;priceLte = 500;break;
      case '2':priceGt = 500;priceLte = 1000;break;
      case '3':priceGt = 1000;priceLte = 5000;break;
    }
    params = {
      salePrice: {
        $gt: priceGt,
        $lte: priceLte
      }
    }
  }

  // 分页
  var goodsModel = Goods.find(params).skip(skip).limit(pageSize);
  // 排序
  goodsModel.sort({'salePrice': sort});

  goodsModel.exec(function (err, doc) {
    if (err) {
      res.json({
        status: '1',
        msg: err.message
      });
    } else {
      res.json({
        status: '0',
        msg: '',
        result: {
          count: doc.length,
          list: doc
        }
      })
    }
  })

});

/**
 * 加入购物车功能
 */
router.post('/addCart', function (req, res, next) {
  // 假设用户登录
  var userId = '100000077', productId = req.body.productId;

  // 获取用户模型
  var User = require('../models/User');

  // 通过用户id查找用户购物车的信息
  User.findOne({userId: userId}, function (err, userDoc) {
    if (err) {
      res.json({
        status: '1',
        msg: err.message
      })
    } else {
      console.log('userDoc', userDoc);

      if (userDoc) {
        var goodsItem = '';
        // 遍历购物车里是否已经添加过商品的信息
        userDoc.cartList.forEach(function (item) {
          if (item.productId == productId) {
            goodsItem = item;
            item.productNum ++;
          }
        });

        // 购物车原本存在商品，进行累加
        if (goodsItem) {
          userDoc.save(function (err2, doc2) {
            if (err2) {
              res.json({
                status: '1',
                msg: err2.message
              })
            } else {
              res.json({
                status: '0',
                msg: '',
                result: 'success'
              })
            }
          })
        } else {
          // 从商品拿到一条数据
          Goods.findOne({productId: productId}, function (err1, doc) {
            if (err1) {
              res.json({
                status: '1',
                msg: err1.message
              })
            } else {
              // 拿到数据把数量赋值为1，并且选中
              if (doc) {
                doc.productNum = 1;
                // 选中
                doc.checked = 1;

                userDoc.cartList.push(doc);
                userDoc.save(function (err2, doc2) {
                  if (err2) {
                    res.json({
                      status: '1',
                      msg: err2.message
                    })
                  } else {
                    res.json({
                      status: '0',
                      msg: '',
                      result: 'success'
                    })
                  }
                })
              }
            }
          })
        }


      }
    }
  })
});

module.exports = router;
